PropertyCase
Property cases (PropertyCase or PropCase) are basically variables in the camera's RAM that we can read and write from CHDK by using uBasic commands get_prop and set_prop. "Under the hood" some other uBasic commands work by changing propcases, making it possible to use them in a portable way. Some propcases are read-only. Often writing to a propcase will have a different effect than pressing the corresponding buttons on the camera's user interface. Typically this means that while you may change something like the shutter speed and your change will be effective in your photo, it may not be updated to the camera's on-screen display. To find out which Property case a function changes see this! Notes: * There also is now a List of Params, it needs to be filled with data though ;) * since CHDK changeset #1306 (29-Aug-2011), extended commands to access propcases are available for the Lua scripting language: get_prop_str / set_prop_str / binstr Digic II (propset1) Digic II based camera (and some Digic III cameras: G7, SD800IS, SD900) : *''' = camera supports PropertyCase (PropertyCase value may be camera specific) : '-' = camera does not support PropertyCase (at least value does not change) Digic III & Digic IV (propset2) *Digic III based cameras: SD1000, A470, A570IS, A590IS, A650IS, SX110 (and also others) *Digic IV based cameras: SX10, SX1, SD990, SX200 (and also others); notes like SX10 should fit also for other Digic IV based cameras with this feature... On the A590 it seems that possible prop-ids range from 0 to 287. IDs greater than 287 will return always "14". Digic IV (propset3) *New propcases introduced with the G11 *Digic IV based cameras: '''G11, SX1 IS, SX120, probably S90, SD4000, SX210 *include\propset3.h :*''' = camera supports PropertyCase (PropertyCase value may be camera specific) :-''' = camera does not support PropertyCase (at least value does not change) Digic IV (propset4) *Digic IV based cameras: '''G12', S95, etc *include\propset4.h :*''' = camera supports PropertyCase (PropertyCase value may be camera specific) :-''' = camera does not support PropertyCase (at least value does not change) PropertyCase NOT found *Manual White balance settings, needed for white balance fine tuning : Manual White balance property case for G11 is 0x10F. : It was found based on the analysis of firmware and needs confirmation from developers who can access camera to perform some tests to verify is it correct or not. : (cppasm) *MF Point Zoom *AF-assist Beam *Number of shots in Custom drive mode *Review time *Selected Scene Mode *Current Display Mode, i.e. no info, more info, full info, where you cycle through by pressing disp. Where could these be stored? I scanned all Property Cases from 0 till 300, after that everything seems to be 0. PTT 01:59, 9 July 2007 (UTC) * A face is being detected Some parameters can be read with the function get_parameter_data(). ?ut the numbers of parameters depends on the camera model. For example, Canon 710 IS: 72 Delay in Custom drive mode (in seconds, 1 byte) 73 Number of shots in Custom drive mode (1 byte) 9 Review time (in msec, 4 bytes) 54 Current Display Mode for record review mode - 0,1 or 2 (2 bytes) 53 Current Display Mode for view mode - 0,1 or 2 (2 bytes) get_parameter_data() Here are a few values that I think work that way with get_parameter_data() on my ixus 950 is... maybe someone can test and verify them for this cam or even for others? 2 Next Image/Movie Number (0-9999) 18 LCD Brightness 56 Current Display Mode for view mode - 0,1 or 2 73 Number of shots in Custom drive mode 104 "Show clock" (in seconds) Timezone Information On my cam (ixus 950 is) get_parametr_data(20,...) seems to be the timezone information. There is a strong correlation of the following values (Names are in german or translated): (DST Must be somewhere else) 0x010100 London ( = 65792 ) 0x010101 Paris 0x010102 Kairo 0x010103 Moskau 0x010104 Teheran 0x010105 Dubai 0x010106 Kabul 0x010107 Karachi 0x010108 Delhi 0x010109 Kathmandu 0x01010A Dacca 0x01010B Yangon 0x01010C Bangkok 0x01010D HongKong 0x01010E Tokyo 0x01010F Adelaide 0x010110 Sydney 0x010111 Solomon Islands 0x010112 Wellington 0x010113 Chathman Islands 0x010114 Samoa 0x010115 Honolulu 0x010116 Anchorage 0x010117 LosAngeles 0x010118 Denver 0x010119 Chicago 0x01011A NewYork 0x01011B Caracas 0x01011C NewFoundland 0x01011D Rio De Janeiro 0x01011E Fernando de noronha 0x01011F Azoren ( = 65823 ) Given that there are more than 24 of such entries, these seem to be offsets into somewhere else, will need to find it there... My cam also has a travel timezone setting. I get really high numbers for when chosing one, so it looks to me like they get somewhat ORed together with a shift or so... need to still test... Discovering PropertyCase meanings and values For property cases that are not yet documented, you have two ways of discovering what they are: *look for which property case changes after modifying camera settings (see below). *disassemble the Canon firmware and look for how property cases are used by functions of known purpose (see this thread). There is a PropertyCaseDump lua script that will dump out current values to a file, and also print out differences compared with a previous dump. There is a feature added by PlasmaHH (see this changeset) which shows changes in Property Cases. Usage: *go to debug menu, go to "ALT +/- debug action", set to "CmpProps?" (Compare propcases) *then in alt-mode, press the +/- button to initialize it (all current propcases are then saved) *then after you made changes in the camera (canon menu) you enter alt-mode, press +/- button - you will see all the props that have changed, until you exit alt-mode *if there are more than 12 changed propcases, after 15 seconds it will show the next entries. this is not convenient, but i couldnt come up with a better way for now. On the other hand: it's not clever changing so many things at once (in-camera) to find out propcases. one at a time is the better solution. Links *PropertyCaseDump *Params PropertyCases Category:Cameras